﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using Microsoft.Xna.Framework.Net;
using Microsoft.Xna.Framework.Storage;

namespace Projeto_Alice___Forca
{
    class Palavras
    {
        enum letras
        {
            a = 1, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z
        }

        //letras letra;

        Random sortear = new Random();
        int intPalavra;
        int intTamanhoPalavra;
        Texture2D t2dPalavra = null;
        Texture2D t2dPalavra1;
        Texture2D t2dPalavra2;
        Texture2D t2dPalavra3;
        Rectangle recPosicaoTamanho;
        Rectangle recLocalLeituraTamanhoFrame;
        bool[] desenharLetraAcertada = new bool[14];
        int intIndice;
        public bool[] boolLetrasEscolhidas = new bool[26];
        int intLetrasDistintas;
        letras[] intLetrasPalavra = new letras[14];

        int intPadraoPosicaoTamanho_X;
        int intPadraoLeituraTamanhoFrame_X;
        int intTaxaPosicaoTamanho_X;
        int intTaxaLeituraTamanhoFrame_X;

        
        public Palavras(Texture2D t2dPalavra1, Texture2D t2dPalavra2, Texture2D t2dPalavra3, Rectangle recPosicaoTamanho, Rectangle recLocalLeituraTamanhoFrame)
        {
            this.t2dPalavra1 = t2dPalavra1;
            this.t2dPalavra2 = t2dPalavra2;
            this.t2dPalavra3 = t2dPalavra3;
            this.recPosicaoTamanho = recPosicaoTamanho;
            this.recLocalLeituraTamanhoFrame = recLocalLeituraTamanhoFrame;
        }

        public void definirPropriedades()
        {
            for (intIndice = 0; intIndice < intLetrasPalavra.Length; intIndice++)
                intLetrasPalavra[intIndice] = 0;

            intPalavra = sortear.Next(1, 4);

            if (intPalavra == 1)
            {
                intTamanhoPalavra = 5;
                t2dPalavra = t2dPalavra1;
                intLetrasDistintas = 5;
                intPadraoPosicaoTamanho_X = 410;
                intPadraoLeituraTamanhoFrame_X = 0;
                intTaxaPosicaoTamanho_X = 50;
                intTaxaLeituraTamanhoFrame_X = 43;
                         

                intLetrasPalavra[0] = letras.a;
                intLetrasPalavra[1] = letras.l;
                intLetrasPalavra[2] = letras.i;
                intLetrasPalavra[3] = letras.c;
                intLetrasPalavra[4] = letras.e;
            }
            else if (intPalavra == 2)
            {
                intTamanhoPalavra = 9;
                t2dPalavra = t2dPalavra2;
                intLetrasDistintas = 8;
                intPadraoPosicaoTamanho_X = 310;
                intPadraoLeituraTamanhoFrame_X = 0;
                intTaxaPosicaoTamanho_X = 50;
                intTaxaLeituraTamanhoFrame_X = 43;

                intLetrasPalavra[0] = letras.p;
                intLetrasPalavra[1] = letras.e;
                intLetrasPalavra[2] = letras.s;
                intLetrasPalavra[3] = letras.s;
                intLetrasPalavra[4] = letras.o;
                intLetrasPalavra[5] = letras.i;
                intLetrasPalavra[6] = letras.n;
                intLetrasPalavra[7] = letras.h;
                intLetrasPalavra[8] = letras.a;
            }
            else if (intPalavra == 3)
            {
                intTamanhoPalavra = 14;
                t2dPalavra = t2dPalavra3;
                intLetrasDistintas = 9;
                intPadraoPosicaoTamanho_X = 40;
                intPadraoLeituraTamanhoFrame_X = 0;
                intTaxaPosicaoTamanho_X = 50;
                intTaxaLeituraTamanhoFrame_X = 43;

                intLetrasPalavra[0] = letras.f;
                intLetrasPalavra[1] = letras.a;
                intLetrasPalavra[2] = letras.r;
                intLetrasPalavra[3] = letras.p;
                intLetrasPalavra[4] = letras.e;
                intLetrasPalavra[5] = letras.l;
                intLetrasPalavra[6] = letras.a;
                intLetrasPalavra[7] = letras.v;
                intLetrasPalavra[8] = letras.o;
                intLetrasPalavra[9] = letras.a;
                intLetrasPalavra[10] = letras.d;
                intLetrasPalavra[11] = letras.o;
                intLetrasPalavra[12] = letras.r ;
                intLetrasPalavra[13] = letras.a;
            }

            for (intIndice = 0; intIndice < desenharLetraAcertada.Length; intIndice++)
                desenharLetraAcertada[intIndice] = false;

            for (intIndice = 0; intIndice < boolLetrasEscolhidas.Length; intIndice++)
                boolLetrasEscolhidas[intIndice] = false;
        }

        public int inttamanhoPalavra
        { get { return intTamanhoPalavra; } }

        public int intletrasDistintas
        { get { return intLetrasDistintas; } }

        public int intpadraoPosicaoTamanho_X
        { get { return intPadraoPosicaoTamanho_X; } }

        public int inttaxaPosicaoTamanho_X
        { get { return intTaxaPosicaoTamanho_X; } }

        public int intpalavra
        { get { return intPalavra; } }

        public bool checarCerto(int intNumeroLetra)
        {
            bool checar = false;

            for (intIndice = 0; intIndice < intLetrasPalavra.Length; intIndice++)
            {
                if (intNumeroLetra == (int)intLetrasPalavra[intIndice])
                {
                    desenharLetraAcertada[intIndice] = true;
                    checar = true;
                }
            }

            return checar;
        }

        public void desenharLetrasAcertadas(SpriteBatch sprite)
        {

            for (intIndice = 0; intIndice < intTamanhoPalavra; intIndice++)
            {
                recPosicaoTamanho.X = intPadraoPosicaoTamanho_X;
                if (desenharLetraAcertada[intIndice])
                {
                    if (intPalavra == 3 && intIndice > 6)
                        recPosicaoTamanho.X += 43;

                    recLocalLeituraTamanhoFrame.X = (intTaxaLeituraTamanhoFrame_X * intIndice);
                    recPosicaoTamanho.X = recPosicaoTamanho.X + (intTaxaPosicaoTamanho_X * intIndice);
                    sprite.Draw(t2dPalavra, recPosicaoTamanho, recLocalLeituraTamanhoFrame, Color.White);
                }
            }
        }
    }
}
